package app.data; import java.io.FileInputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.util.List; import app.model.Order; import app.model.tree.BST; import app.model.tree.Node; import app.model.tree.OrderNode; /** * Represents the Order Processing Department which is in charge of processing * the order of our application. This class uses a Binary Search Tree in order * to store the orders. We also provide the methods in order to interact with * the tree. * * @author Bogdan * */ public class OPDept { private BST orderTree; public OPDept() { loadDataFromDisk(); if (orderTree == null) { orderTree = new BST(); } } private void loadDataFromDisk() { try { FileInputStream fileIn = new FileInputStream("C:\\orders.ser"); ObjectInputStream in = new ObjectInputStream(fileIn); this.orderTree = (BST) in.readObject(); in.close(); fileIn.close(); } catch (IOException e) { System.out.println("File not found"); return; } catch (ClassNotFoundException c) { System.out.println("OrderTree class was not found"); c.printStackTrace(); return; } } public void addNewOrder(Order order) { OrderNode orderNode = new OrderNode(order); orderTree.insert(orderNode); } public List<Node> getAllOrders() { return orderTree.getAllNodes(orderTree.root); } public Order getOrderByName(String name) { for (Node current : getAllOrders()) { if (current.getNodeName().equals(name)) { if (current instanceof OrderNode) { return ((OrderNode) current).getOrder(); } } } return null; } public String getOrderName(OrderNode orderNode) { return orderNode.getOrderName(); } public int getOrderQuantity(OrderNode orderNode) { return orderNode.getOrderQuantity(); } public BST getTree() { return orderTree; } }